package com.sen.patterns.creational.singleton.ex2;

/**
 * 单例类，使用了lazy initialization，但需要注意里面涉及double-checked locking。
 * 优势：可以用在类初始化时需要参数输入的情况下
 * @author sen
 */
public class Singleton {
	
	// 在自己内部定义自己一个实例，是不是很奇怪？
	// 不奇怪，为了防止外部实例化该类
	private Singleton() {
	}
	
	// 注意这是private 只供内部调用
	private static Singleton instance = null;

	// 这里提供了一个供外部访问本class的静态方法，可以直接访问
	public static synchronized Singleton getInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
}
